Linux开发

推荐列表 站点导航

当前位置:首页 > 服务器技术 > Linux开发 >

Linux驱动手动绑定和解绑定

来源:网络整理  作者:网友投稿  发布时间:2020-12-29 16:28
Linux内核从2.6.13-rc3开始,提供了在用户空间,可动态的绑定和解绑定设备和设备驱动之间关系的功能。在这之前,只...

Linux内核从2.6.13-rc3开始,提供了在用户空间,可动态的绑定和解绑定设备和设备驱动之间关系的功能。在这之前,只能通过insmod(modprobe)和rmmod来绑定和解绑,而且这种绑定和解绑都是针对驱动和所有设备的。而新的功能可以设置驱动和单个设备之间的联系。

 

这里,我们以pci总线的nvme ssd为例,首先执行lspci显示所有的nvme ssd。

# lspci | grep memory

01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a802 (rev 01)

09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a802 (rev 01)

 

有如上这么多nvme ssd,那么我们就可以在/dev下看到多个nvme设备(OS启动后默认加载nvme驱动)。

# ls /dev/nvme*

/dev/nvme0 /dev/nvme0n1p2 /dev/nvme0n1 /dev/nvme0n1p3 /dev/nvme0n1p1 /dev/nvme1 /dev/nvme1n1  

 

同时,对于所有的nvme设备(这里我们以pci总线bdf号为09:00.0的ssd为例),都可以在nvme驱动下看到。其中,bind和unbind文件就是涉及到绑定和解绑的关键文件。

/sys/bus/pci/drivers/nvme# ll

total 0

drwxr-xr-x  2 root root    0 Jan  4 17:10 ./

drwxr-xr-x 30 root root    0 Jan  4 17:10 ../

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:09:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:05:00.0/0000:06:0a.0/0000:07:00.0/0000:08:01.0/0000:09:00.0/

--w-------  1 root root 4096 Jan  4 20:46 bind

lrwxrwxrwx  1 root root    0 Jan  4 20:49 module -> ../../../../module/nvme/

--w-------  1 root root 4096 Jan  4 20:49 new_id

--w-------  1 root root 4096 Jan  4 20:49 remove_id

--w-------  1 root root 4096 Jan  4 17:10 uevent

--w-------  1 root root 4096 Jan  4 17:10 unbind

 

解绑一个nvme设备,只需将设备的pci总线bdf号写入/sys/bus/pci/drivers/nvme(不同的设备驱动不同)/unbind即可:

/sys/bus/pci/drivers/nvme# echo -n "0000:09:00.0" > unbind

 

解除绑定成功,再查看目录下文件,该驱动下不再有对应的设备。同时,/dev下也没有对应的nvme设备了。

/sys/bus/pci/drivers/nvme# ll

total 0

drwxr-xr-x  2 root root    0 Jan  4 20:51 ./

drwxr-xr-x 30 root root    0 Jan  4 20:49 ../

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/

--w-------  1 root root 4096 Jan  4 20:46 bind

lrwxrwxrwx  1 root root    0 Jan  4 20:49 module -> ../../../../module/nvme/

--w-------  1 root root 4096 Jan  4 20:49 new_id

--w-------  1 root root 4096 Jan  4 20:49 remove_id

--w-------  1 root root 4096 Jan  4 20:49 uevent

--w-------  1 root root 4096 Jan  4 20:51 unbind

 

绑定一个nvme设备,和解绑类似,将设备的pci总线bdf号写入/sys/bus/pci/drivers/nvme(不同的设备驱动不同)/bind:

/sys/bus/pci/drivers/nvme# echo -n "0000:09:00.0" > bind

绑定成功,再次展示该目录下所有文件,可以发现对应设备再次出现。

/sys/bus/pci/drivers/nvme# ll

total 0

/sys/bus/pci/drivers/nvme# ll

total 0

drwxr-xr-x  2 root root    0 Jan  5 09:13 ./

drwxr-xr-x 30 root root    0 Jan  4 20:49 ../

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/

lrwxrwxrwx  1 root root    0 Jan  5 09:13 0000:09:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:05:00.0/0000:06:0a.0/0000:07:00.0/0000:08:01.0/0000:09:00.0/

--w-------  1 root root 4096 Jan  5 09:13 bind

lrwxrwxrwx  1 root root    0 Jan  4 20:49 module -> ../../../../module/nvme/

--w-------  1 root root 4096 Jan  4 20:49 new_id

--w-------  1 root root 4096 Jan  4 20:49 remove_id

--w-------  1 root root 4096 Jan  4 20:49 uevent

--w-------  1 root root 4096 Jan  4 20:51 unbind

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/server/kaifa/10740.shtml

相关文章
Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Linux驱动手动绑定和解绑定

2020-12-29 编辑:网友投稿

Linux内核从2.6.13-rc3开始,提供了在用户空间,可动态的绑定和解绑定设备和设备驱动之间关系的功能。在这之前,只能通过insmod(modprobe)和rmmod来绑定和解绑,而且这种绑定和解绑都是针对驱动和所有设备的。而新的功能可以设置驱动和单个设备之间的联系。

 

这里,我们以pci总线的nvme ssd为例,首先执行lspci显示所有的nvme ssd。

# lspci | grep memory

01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a802 (rev 01)

09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a802 (rev 01)

 

有如上这么多nvme ssd,那么我们就可以在/dev下看到多个nvme设备(OS启动后默认加载nvme驱动)。

# ls /dev/nvme*

/dev/nvme0 /dev/nvme0n1p2 /dev/nvme0n1 /dev/nvme0n1p3 /dev/nvme0n1p1 /dev/nvme1 /dev/nvme1n1  

 

同时,对于所有的nvme设备(这里我们以pci总线bdf号为09:00.0的ssd为例),都可以在nvme驱动下看到。其中,bind和unbind文件就是涉及到绑定和解绑的关键文件。

/sys/bus/pci/drivers/nvme# ll

total 0

drwxr-xr-x  2 root root    0 Jan  4 17:10 ./

drwxr-xr-x 30 root root    0 Jan  4 17:10 ../

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:09:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:05:00.0/0000:06:0a.0/0000:07:00.0/0000:08:01.0/0000:09:00.0/

--w-------  1 root root 4096 Jan  4 20:46 bind

lrwxrwxrwx  1 root root    0 Jan  4 20:49 module -> ../../../../module/nvme/

--w-------  1 root root 4096 Jan  4 20:49 new_id

--w-------  1 root root 4096 Jan  4 20:49 remove_id

--w-------  1 root root 4096 Jan  4 17:10 uevent

--w-------  1 root root 4096 Jan  4 17:10 unbind

 

解绑一个nvme设备,只需将设备的pci总线bdf号写入/sys/bus/pci/drivers/nvme(不同的设备驱动不同)/unbind即可:

/sys/bus/pci/drivers/nvme# echo -n "0000:09:00.0" > unbind

 

解除绑定成功,再查看目录下文件,该驱动下不再有对应的设备。同时,/dev下也没有对应的nvme设备了。

/sys/bus/pci/drivers/nvme# ll

total 0

drwxr-xr-x  2 root root    0 Jan  4 20:51 ./

drwxr-xr-x 30 root root    0 Jan  4 20:49 ../

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/

--w-------  1 root root 4096 Jan  4 20:46 bind

lrwxrwxrwx  1 root root    0 Jan  4 20:49 module -> ../../../../module/nvme/

--w-------  1 root root 4096 Jan  4 20:49 new_id

--w-------  1 root root 4096 Jan  4 20:49 remove_id

--w-------  1 root root 4096 Jan  4 20:49 uevent

--w-------  1 root root 4096 Jan  4 20:51 unbind

 

绑定一个nvme设备,和解绑类似,将设备的pci总线bdf号写入/sys/bus/pci/drivers/nvme(不同的设备驱动不同)/bind:

/sys/bus/pci/drivers/nvme# echo -n "0000:09:00.0" > bind

绑定成功,再次展示该目录下所有文件,可以发现对应设备再次出现。

/sys/bus/pci/drivers/nvme# ll

total 0

/sys/bus/pci/drivers/nvme# ll

total 0

drwxr-xr-x  2 root root    0 Jan  5 09:13 ./

drwxr-xr-x 30 root root    0 Jan  4 20:49 ../

lrwxrwxrwx  1 root root    0 Jan  4 20:49 0000:01:00.0 -> ../../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/

lrwxrwxrwx  1 root root    0 Jan  5 09:13 0000:09:00.0 -> ../../../../devices/pci0000:00/0000:00:03.0/0000:05:00.0/0000:06:0a.0/0000:07:00.0/0000:08:01.0/0000:09:00.0/

--w-------  1 root root 4096 Jan  5 09:13 bind

lrwxrwxrwx  1 root root    0 Jan  4 20:49 module -> ../../../../module/nvme/

--w-------  1 root root 4096 Jan  4 20:49 new_id

--w-------  1 root root 4096 Jan  4 20:49 remove_id

--w-------  1 root root 4096 Jan  4 20:49 uevent

--w-------  1 root root 4096 Jan  4 20:51 unbind

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/server/kaifa/10740.shtml

相关文章

风云图片

推荐阅读

返回Linux开发频道首页